Fix e820 array stack overflow
authoriap10@freefall.cl.cam.ac.uk <iap10@freefall.cl.cam.ac.uk>
Wed, 17 Aug 2005 22:01:24 +0000 (22:01 +0000)
committeriap10@freefall.cl.cam.ac.uk <iap10@freefall.cl.cam.ac.uk>
Wed, 17 Aug 2005 22:01:24 +0000 (22:01 +0000)
I don't see the problem on machine that I typically use, but I found and
fixed the problem on a big machine. It was causing a stack overflow. If
you look at the current code, it's a bit dangerous, see => part. This
patch fixes it.
From: "Nakajima, Jun" <jun.nakajima@intel.com>
Signed-off-by: ian@xensource.com
xen/arch/x86/setup.c

index 070a9127b288534addccdb2dc399476e66a7d628..6c5adf5ca0ea3f2ff8e1476d1def767e89d337e2 100644 (file)
@@ -244,6 +244,8 @@ static void __init start_of_day(void)
 
 #define EARLY_FAIL() for ( ; ; ) __asm__ __volatile__ ( "hlt" )
 
+static struct e820entry e820_raw[E820MAX];
+
 void __init __start_xen(multiboot_info_t *mbi)
 {
     char *cmdline;
@@ -253,7 +255,6 @@ void __init __start_xen(multiboot_info_t *mbi)
     unsigned long _initrd_start = 0, _initrd_len = 0;
     unsigned int initrdidx = 1;
     physaddr_t s, e;
-    struct e820entry e820_raw[E820MAX];
     int i, e820_raw_nr = 0, bytes = 0;
     struct ns16550_defaults ns16550 = {
         .data_bits = 8,